<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'display.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	<!-- 导入 struts-tags 包, s:debug 可以查看值栈的状态 -->
  	<s:debug></s:debug><br><br>
  	
    ProductName:${productName}<br><br>
  	ProductDesc:${productDesc}<br><br>
  	ProductPrice:${productPrice}<br><br>
  	
  	<!-- 使用 ognl 表达式访问位于栈的第 1 个对象的 productPrice 属性 --> 
  	<!-- 若栈的第 1 个对象没有 productPrice 属性, 则向下检索 -->
  	<!-- 若要访问栈顶对象的属性, 可省略 [0], value 值可以写作"productPrice" -->
  	<!-- s:property 用于打印值栈中对象的值、对象的属性值 -->
  	ProductPrice:<s:property value="[0].productPrice"/><br><br>
  	
  	<!-- 使用 ognl 表达式访问各个域中的对象, 可以访问对象中的属性 -->
  	Product1:<s:property value="#request.product1"/><br>
  	Product2:<s:property value="#session.product2"/><br>
  	Product3:<s:property value="#application.product3"/><br>
  	
  	<!-- 使用 ognl 调用类的 public、static 的方法、属性 -->
  	PI:<s:property value="@java.lang.Math@PI"/><br>
  	Cos0:<s:property value="@java.lang.Math@cos(0)"/>
  	
  	<!-- 使用 ognl 调用值栈对象的方法 -->
  	<s:property value="[0].setProductPrice(10000)"/><br>
  	ProductPrice:<s:property value="[0].productPrice"/><br>
  	
  	<!-- 使用 ognl 调用数组的方法 -->
  	ArrayLength:<s:property value="#attr.stringArray.length"/><br>
  	Array[2]:<s:property value="#attr.stringArray[2]"/><br>
  	
  	<!-- 使用 ognl 访问 Map -->
  	StringMapSize:<s:property value="#attr.stringMap.size"/><br>
	StringMapValue:<s:property value="#attr.stringMap['stringMapKey']"/>
  	
  </body>
</html>